mixpanelのコホートをBigQueryにエクスポートする
ミックスパネラーの國崎です。
今回はmixpanelで作成したコホートをWebhookとCloud Functionsを使ってBigQueryにエクスポートするという知っておくとちょっと便利な技術をお伝えします。
前提条件
- mixpanelでコホートを作れる環境である
- mixpanelでコホートをエクスポートできる権限がある
- 今回使うWebhookはWebhook Relay
- Google Cloudのプロジェクト設定は完了している
全体の作業の流れ
全体の作業の流れとしては以下になります。
- mixpanelでコホートを作成する
- Webhook Relayでバケットを作成する
- BigQueryでテーブルの作成をする
- Cloud FunctionsでBigQueryへの連携をする
- Webhook RelayでCloud FunctionsのURLを設定する
- mixpanelでWebhook Relayバケットの連携をする
- BigQueryにコホートが入ったか確認する
上記に挙げた項目の中には別記事で詳しいやり方を書いてるものもあるので、それらの記事の案内と合わせて本記事では全体の作業をお伝えします。
やってみる
mixpanelでコホートを作成する
mixpanelのコホートについては以下記事で案内をしているので、以下を参照ください。
Webhook Relayでバケットを作成する
今回はWebhook Relayを使います。
使う理由としては無料でWebhookにエクスポートされたコホートを転送できる機能があったので選びました。
Webhook Relayを初めて使う方は右上のSign upからアカウントを作成ください。
アカウント作成の際に入力したメールアドレスにメールが届くので、確認後再度Webhook Relayに遷移し、左メニュー>Access Tokensをクリック。
CREATE TOKENをクリックしてAccess Tokensを作成。
次にバケットを作成するので左メニュー>Bucketsをクリック。
NEW EMPTY BUCKETをクリックし、バケットを作成します。
作成されたバケットのAuthenticationに先ほど作成したAccess Tokensを設定します。
作成されたバケットのInputsにあるDefault public endpointをクリック。
CUSTOM RESPONSEのタブ内にあるHeader/ValueをContent-Type: application/jsonで保存。
SETTINGのタブ内にあるURLは「mixpanelでWebhook Relayバケットの連携をする」で使うので、コピーして保存しておきます。
BigQueryでテーブルの作成をする
次にBigQueryでテーブルの作成をします。
今回は以下の感じでテーブルを作ってみました。
CREATE TABLE `プロジェクト名.データセット名.テーブル名` ( email STRING, mixpanel_distinct_id STRING, first_name STRING, last_name STRING, action STRING, mixpanel_project_id STRING, mixpanel_cohort_id STRING, mixpanel_cohort_name STRING, mixpanel_cohort_description STRING, mixpanel_session_id STRING, page_info_total_pages INT64, page_info_page_count INT64 );
テーブルを作成したらCloud FunctionsでWebhook RelayバケットをBigQueryに連携させる作業を行なっていきます。
Cloud FunctionsでBigQueryへの連携をする
Cloud Functionsで以下の設定を行います。
- 第一世代
- トリガー…HTTP
- ランタイム…Node.js 20
- エントリポイント…任意の名前
- ソースコード…インラインエディタ
index.js
const express = require('express'); const bodyParser = require('body-parser'); const { BigQuery } = require('@google-cloud/bigquery'); const app = express(); app.use(bodyParser.json()); app.get('/', (req, res) => { res.status(200).send("Hello, this is エントリポイントの名前 function!"); }); app.post('/', async (req, res) => { const bigquery = new BigQuery(); const datasetId = 'データセット名'; const tableId = 'テーブル名'; const requestBody = req.body; const rows = requestBody.parameters.members.map(member => ({ email: member.email, mixpanel_distinct_id: member.mixpanel_distinct_id, first_name: member.first_name, last_name: member.last_name, action: requestBody.action, mixpanel_project_id: requestBody.parameters.mixpanel_project_id, mixpanel_cohort_id: requestBody.parameters.mixpanel_cohort_id, mixpanel_cohort_name: requestBody.parameters.mixpanel_cohort_name, mixpanel_cohort_description: requestBody.parameters.mixpanel_cohort_description, mixpanel_session_id: requestBody.parameters.mixpanel_session_id, page_info_total_pages: requestBody.parameters.page_info.total_pages, page_info_page_count: requestBody.parameters.page_info.page_count })); try { await bigquery.dataset(datasetId).table(tableId).insert(rows); res.status(200).send('Success'); } catch (error) { res.status(500).send('Failed to process request'); } }); exports.エントリポイントの名前 = app;
package.json
{ "name": "mixpanel-webhook-to-bigquery", "version": "1.0.0", "description": "Google Cloud Function to save Mixpanel webhook data to BigQuery", "main": "index.js", "scripts": { "start": "node index.js" }, "dependencies": { "@google-cloud/bigquery": "^5.9.0", "express": "^4.17.1", "body-parser": "^1.19.0" } }
トリガーに表示されているHTTPのURLは「Webhook RelayでCloud FunctionsのURLを設定する」で使うのでコピーして保存しておきます。
Webhook RelayでCloud FunctionsのURLを設定する
再度Webhook RelayのBucketsに戻り、今度はOutput Destinationsの設定をします。
ADD MORE+をクリック。
Nameには任意の名前、DestinationにはCloud FunctionsのトリガーでコピーしたURLを貼り、Publicを選択します。
SETTINGでHeader/ValueはContent-Type: application/jsonを設定します。
ここまで終わったら最後にmixpanelでWebhook Relayとの連携を行います。
mixpanelでWebhook Relayバケットの連携をする
mixpanelのダッシュボードに移動してWebhook Relayとの連携を行います。
mixpanelコホートをWebhookへエクスポートする具体的な手順については以下記事で案内をしていますので、こちらをご覧ください。
mixpanelのコホートをカスタムWebhookにエクスポートする
連携するWebhookのURLはWebhook Relayバケットで作成したInputsにあるURLになります。
注意点として連携作業を終えても、すぐにデータのエクスポートが始まるわけではなく15〜30分程度の時間がかかります。
エクスポートが無事完了した際はmixpanelのIntegrationsのCustom Webhookで連携されたユーザー数が表示されます。
またWebhook Relayの画面でPOSTが正常にされているかも確認しておきましょう。
無事完了してる場合は200が表示されます。
BigQueryにコホートが入ったか確認する
作成したBigQueryのテーブルを確認してみます。
今回の作成したコホートと同じデータが入っているのを確認しました。
以上が【mixpanelのコホートをWebhookでBigQueryにエクスポートする】手順になります。
クラスメソッドが行っているmixpanelの支援
クラスメソッドではmixpanelをすでにお使いのお客様にも以下の支援サービスを提供しております。
- PoC…検証環境提供
- プランニング支援…KPI設計の支援/QA対応
- 実装支援…開発の支援/SaaS連携支援
- 伴走支援…定例など
mixpanelのKPI設計は以下記事でも紹介している専用の測定フレームワークを用いたプランニング支援をさせていただきます。
mixpanelの測定フレームワーク作り方のコツ!サンプルを例に解説!
また実装いただいた後の伴走支援では実際にお使いになられているお客様の課題感などをヒアリングさせていただき、ご要望に沿った内容での定例を設けさせていただき、成果につなげるための分析手法のご提案などをさせていただきます。
今回の記事を見てmixpanelについて詳細の話を聞きたい、興味を持ったという方はぜひぜひクラスメソッドまでお問い合わせください!!